package cn.demoncat.util.disruptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.lmax.disruptor.ExceptionHandler;

/**
 * Disruptor 异常处理器
 * 
 * @author 延晓磊
 *
 * @since 2020年1月2日
 */
public class DisruptorExceptionHandler implements ExceptionHandler<Object> {

    private static final Logger LOG = LoggerFactory.getLogger(DisruptorExceptionHandler.class);

    /**
     * 运行时异常
     * 
     * @param ex
     * @param sequence
     * @param event
     *
     * @author 延晓磊
     *
     * @since 2020年1月2日
     */
	@Override
	public void handleEventException(Throwable ex, long sequence, Object event) {
		 LOG.error("运行Disruptor出错：sequence = {}, event = {}", sequence, event, ex);
	}

	/**
	 * 启动时异常
	 * 
	 * @param ex
	 *
	 * @author 延晓磊
	 *
	 * @since 2020年1月2日
	 */
	@Override
	public void handleOnStartException(Throwable ex) {
		LOG.error("启动Disruptor出错", ex);
	}

	/**
	 * 关闭时异常
	 * 
	 * @param ex
	 *
	 * @author 延晓磊
	 *
	 * @since 2020年1月2日
	 */
	@Override
	public void handleOnShutdownException(Throwable ex) {
		LOG.error("关闭Disruptor出错", ex);
	}
	

}
